import axios from 'axios'
import { logout } from '@/store/actions'
import { message } from 'antd'
import store from '@/store'
import { customHistory } from './history'
const http = axios.create({
  baseURL: 'http://geek.itheima.net/v1_0',
  timeout: 5000,
})

// 请求拦截器
http.interceptors.request.use((config) => {
  const { login: token } = store.getState()
  // 除了登录请求外，其他请求一律携带token
  if (!config.url.startsWith('/authorizations')) {
    console.log('非登录请求')
    config.headers.Authorization = `Bearer ${token}`
  }
  return config
})

// 响应拦截器
http.interceptors.response.use(undefined, (error) => {
  if (!error.response) {
    message.error('网络繁忙，请稍后再试')
    return Promise.reject(error)
  }
  if (error.request.status === 401) {
    message.error(error.response.data.message, 1, () => {
      store.dispatch(logout())
      // 不知道为什么login组件拿不到传过去的state
      // 能传过去值，只不过传两次，第一次正确，第二次被/login覆盖
      // 不明白为什么会被调用两次
      console.log(customHistory.location.pathname);
      customHistory.push('/login', {
        from: customHistory.location.pathname
      })
    })
  }
  return Promise.reject(error)
})

export { http }
